package demo;

/**
 * Created by 5406160@qq.com on LiBoWen 李博闻.
 *
 * @ClassName : Demo
 * @Author : 54061
 * @Date: 2022/2/11 8:35
 */
/*
/*
    1. 一个局部变量在 匿名内部类中使用 需要在局部变量的前面加final关键字
        原因 : 局部变量的生命周期随着方法的调用而产生随着方法的调用完毕而结束

    2. JDK7/8中 局部变量前面的final可以不加(代码有优化机制)
        实时final就是这种优化机制:
            1. 如果这个局部变量在匿名内部类中使用了,自动加上final关键字
            1. 如果这个局部变量没有在匿名内部类中使用 --> 不管
 */
public class Demo {
    public static void main(String[] args) {

        //定义一个main局部变量
        /*final*/ int num = 10;         //栈中


        InterA ia = new InterA() {
            //这里是InterA的一个不知名(实现类类名)的实现类对象 --> 堆中
            @Override
            public void show() {
                System.out.println("num = " + num);
            }
        };
        //num = 20;
    }
}

interface InterA{
    public abstract void show();
}
